/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appvideo;

import appvideo.logica.Caja;
import appvideo.logica.Socio;
import appvideo.logica.Tarjeta;
import appvideo.logica.Usuario;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author JAVA
 */
public class SubMenu_gestionSocios {
    public static void gestionSocios(){
        //opc_submenu es usada para la seleccion de opciones de este submenu
                                int opc_submenu=0;
                                do{
                                    try{
                                        opc_submenu = ObtenerTeclado.dameEntero("\nSeleccione opcion:\n1.Alta Socio\n2.Baja Socio\n3.Modificar Socio\n4.Visualizar Socios\n5.Buscar Socio\n6.Recarga Tarjeta Socio\n7.Volver Atras"); 
                                        switch(opc_submenu){
                                            case 1://SUBMENU: ALTA SOCIO
                                                String nombre = ObtenerTeclado.dameCadena("Introduzca nombre:" );
                                                String apellido1 = ObtenerTeclado.dameCadena("Introduzca 1º apellido:");
                                                String apellido2 = ObtenerTeclado.dameCadena("Introduzca 2º apellido:");
                                                String apellidos = apellido1+" "+apellido2;
                                                String dniAlta = ObtenerTeclado.dameCadena("Introduzca DNI:");
                                                String email = ObtenerTeclado.dameCadena("Introduzca email:");
                                                int tlf  = ObtenerTeclado.dameEntero("Introduzca tlf:");
                                                String password = ObtenerTeclado.dameCadena("Introduzca password(sin espacios)");
                                                Date fechaAltaEmp = new Date();
                                                //Creamos el socio y su tarjeta con 0 de credito
                                                Usuario socAlta = new Socio(nombre,apellidos,dniAlta,email,tlf,fechaAltaEmp,password,new Tarjeta(0));
                                                socAlta.altaUsuario();
                                                opc_submenu=0;
                                                break;
                                            case 2: //SUBMENU BAJA SOCIO
                                                String dniBaja = ObtenerTeclado.dameCadena("\nBusqueda Socio:\nIntroduzca DNI:");
                                                Usuario socBaja = Socio.buscaUsuario(dniBaja);
                                                if(socBaja!=null){
                                                    socBaja.bajaUsuario(); 
                                                }
                                                opc_submenu=0;
                                                break;
                                            case 3:
                                                //SUBMENU MODIFICAR SOCIO
                                                String dniModif = ObtenerTeclado.dameCadena("\nBusqueda Socio:\nIntroduzca DNI:");
                                                Socio socModif = Socio.buscaUsuario(dniModif);
                                                if(socModif!=null){
                                                    int opc_modif_soc=0;
                                                    do{
                                                        try{//MENU MODIFICAR DATOS SOCIO
                                                            opc_modif_soc = ObtenerTeclado.dameEntero("Seleccione Dato a Modificar:\n1.Nombre\n2.Apellidos\n3.DNI\n4.Email"
                                                            + "\n5.Telefono\n6.Fecha de Alta\n7.Volver(No se guardaran los datos)\n8.Confirmar(Actualizara todos los campos modificados)");

                                                            switch(opc_modif_soc){
                                                                case 1:
                                                                    socModif.setNombre(ObtenerTeclado.dameCadena("Introduzca nuevo Nombre: "));
                                                                    break;
                                                                case 2:
                                                                    //En el caso de los apellidos, debos pedirlo uno por uno, sino solo se quedaria con el primero
                                                                    String a1 = ObtenerTeclado.dameCadena("Introduzca primer Apellido: ");
                                                                    String a2 = ObtenerTeclado.dameCadena("Introduzca segundo Apellido: ");
                                                                    socModif.setApellidos(a1+" "+a2);
                                                                    break;
                                                                case 3:
                                                                    socModif.setDni(ObtenerTeclado.dameCadena("Introduzca nuevo DNI: "));
                                                                    break;
                                                                case 4:
                                                                    socModif.setEmail(ObtenerTeclado.dameCadena("Introduzca nuevo Email: "));
                                                                    break;
                                                                case 5:
                                                                    try{
                                                                        socModif.setTlf(ObtenerTeclado.dameEntero("Introduzca nuevo Telefono: "));
                                                                    }catch(NumberFormatException nme){
                                                                        System.out.println("Debe introducir numeros, no otros simbolos.");
                                                                    }
                                                                    break;
                                                                case 6:
                                                                    //MODIFICACION DE LA FECHA DE ALTA, IMPONGO EL FORMATO A TRAVES DEL SimpleDateFormat
                                                                    SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd");
                                                                    String stringFecha=ObtenerTeclado.dameCadena("Introduzca nueva fecha(yyyy-MM-dd):");
                                                                    try {
                                                                        Date nuevoDate = dtf.parse(stringFecha);
                                                                        socModif.setfAlta(nuevoDate);
                                                                    } catch (ParseException ex) {
                                                                        System.out.println("No ha introducido el formato requerido para la fecha.");
                                                                    }
                                                                    break;
                                                                case 7:
                                                                    //Codigo necesario para volver al submenu anterior
                                                                    //Los cambios que hayas hecho hasta el momento no se guardan en la BD
                                                                    opc_submenu=0;
                                                                    break;
                                                                case 8:
                                                                    //CONFIRMACION DE LA MODIFICACION. AHORA ATACO A LA BD 
                                                                    //CON TODO LO MODIFICADO ANTERIORMENTE(Excepto el Salario que va aparte)
                                                                    socModif.modificaUsuario();
                                                                    opc_submenu=0;
                                                                default:
                                                                    break;
                                                            }

                                                        }catch(NumberFormatException nme){
                                                            System.out.println("Error con la opción elegida.");
                                                        }
                                                    }while(opc_modif_soc!= 7 && opc_modif_soc!=8);
                                                }
                                                break;
                                            case 4:
                                                //Visualizar socios
                                                Socio.visualizaSocios();
                                                opc_submenu=0;
                                                break;
                                            case 5:
                                                //Buscar e imprimir socio
                                                dniModif = ObtenerTeclado.dameCadena("\nBusqueda Socio:\nIntroduzca DNI:");
                                                socModif = Socio.buscaUsuario(dniModif);
                                                if(socModif!=null){
                                                    System.out.println(""+socModif.toString());
                                                }
                                                opc_submenu=0;
                                                break;
                                            case 6:
                                                //Recarga de la tarjeta de un socio
                                                dniModif = ObtenerTeclado.dameCadena("\nBusqueda Socio:\nIntroduzca DNI:");
                                                socModif = Socio.buscaUsuario(dniModif);
                                                //creamos un objeto caja
                                                Caja caja;
                                                if(socModif!=null){
                                                    try{
                                                        int valorrecarga=ObtenerTeclado.dameEntero("Introduzca el valor del recargo(sin decimales):");
                                                        socModif.getTarjetaSocio().aumentaCredito(valorrecarga);
                                                        socModif.getTarjetaSocio().recargaTarjeta(socModif,valorrecarga); 
                                                    }catch(Exception ex){
                                                        System.out.println("Para el valor del recargo debe introducir un valor numerico exacto");
                                                    }
                                                }
                                                opc_submenu=0;
                                                break;
                                            case 7://Volver atrás->A menu principal
                                                //Se pone a 0 la opcion del menu superior para no
                                                //salir del todo
                                                main.opc=0;
                                                break;
                                            default:
                                                System.out.println("Error con la opción elegida.");
                                                break;
                                        }
                                    }catch(NumberFormatException nme){
                                        System.out.println("Error con la opción elegida.");
                                    }
                                }while(opc_submenu<1 || opc_submenu>7);
    }
}
